home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #142 (1991-10)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #142 (1991-10)(Rhein-Sieg-Soft).adf
/
LinienP
/
LiesMich
< prev
next >
Wrap
Text File
|
1991-09-30
|
9KB
|
164 lines
***************************************************************************
* Linien V1.0 *
* *
* Geschrieben im Jahre 1991 von Norbert Tausch *
* *
* Dieses Programm ist Public Domain (FD) ; Nobi-Soft *
* *
***************************************************************************
Vorwort .......................... Zeile 15
Beschreibung des Programmaufbaus . Zeile 34
Benutzungsbedingungen ............ Zeile 121
Adresse des Autors ............... Zeile 135
Nachwort ......................... Zeile 152
***************************************************************************
Vorwort
Dieses Programm ist eine Art Demoprogramm das aufzeigen soll wie man ein
Assemblerprogramm schreibt das sowohl vom CLI als auch von der Workbench
aus gestartet werden kann. Dies ist besonders für Einsteiger interesant
die ihr Programm multitaskingfähig schreiben wollen. Neben dem Programm
ist eine Erklärung abgegeben wie dies bewerkstelligt werden kann. Inklusive
Sourcecode in Assembler (Devpac V2.14D u. A68k V2.6).
Bevor ich jetzt zur Programmbeschreibung komme möchte ich darauf hinweisen
das der Sourcecode etwas "verschnörkelt" aussieht da ich das Programm mit
dem Devpac-Assembler erstellt habe und dieser den Sourcecode nicht in ASCII
speichert. Dadurch kommt es zustande das der Source im ASCII etwas ver-
schoben aussieht. Ich habe keine Schuld! Soweit es erträglich für mich war
habe ich den Sourcecode mit einem Text-Editor nochmals nachbearbeitet! Ich
bitte um Ihr Verständnis. (Wie schreibt man das den überhaupt?)
***************************************************************************
Beschreibung des Programmaufbaus
Da dieser Computer, den Namen habe ich vergessen, ein Multitaskingfähiger
Computer ist, können mehrere Programme gleichzeitig "nebeneinander" laufen.
(Ist ja logisch!) Das mag zwar für den Anwender ganz nützlich und bequem
sein, aber für den Programmierer selbst wirft das ein paar zusätzlich
Programmierschritte auf. Wenn ein Programm vom CLI aus gestartet wird, so
hat es das Exclusivrecht als alleiniges Programm zu laufen. D.h. es muß
nicht Angst haben das ein anderes Programm versucht ihm den Speicher wegzu-
nehmen! Dies kann man aber dadurch umgehen indem man den Befehl RUN ver-
wendet. Das bringt aber für den Programmierer keine Nachteile da in diesem
Falle der Befehl RUN das restliche regelt.
Wenn ein Programm aber von der Workbench aus laufen soll so ist das nicht
mehr möglich. Sie können ihr Programm ruhig wie ein Programm schreiben
das vom CLI aus laufen soll und dieses einmal von der Workbench aus
starten. Bald werden Sie merken das der Computer immer abstürzt. Nun dies
kommt daher weil Ihr Programm keine Aufenthaltsgenehmigung auf der Work-
bench hatte. Diese muß natürlich erst einmal eingeholt werden. Und wie dies
funktioniert wird nun erklärt.
Sehen wir uns dazu das Programm Linien einmal an. In den ersten Zeilen
finden die ganzen Deklarationen der Konstanten statt. In den ersten
Programmzeilen wird nun erst einmal getestet ob wir vom CLI aus gestartet
wurden. Wir gehen hierzu wiefolgt vor: Wir bewegen die ExecBase dazu sich
gefälligst nach a6 zu begeben. Danch holen wir den Zeiger auf unseren
eigenen Task nach a0. Was heißt eigentlich Task. Es ist eher unsere Task-
struktur. Und ab dem Offset 172(=$ac) steht ein Wert der anzeigt ob es ein
CLI- oder ein Workbenchtask ist. Falls es nun ein Workbenchtask ist, so
müsssen wir verzweigen und zwei Möglichkeiten beschreiben - die eine ist
die Möglichkeit das vom CLI aus gestartet wurde und die andere ist die, das
von der Workbench gestartet wurde. Beide Möglichkeiten müssen von uns nun
in betracht gezogen werden.
Falls vom CLI aus gestartet wurde, so müssen wir das Programm so schreiben
wie wir es vom CLI aus halt gewohnt sind (Im Beispielprogramm Linien gibt
es zwischen beiden keinen Unterschied, da wir keine Parameter und anderes
einlesen). Wenn aber von der Workbench gestartet wurde, so ist zuerst diese
Aufenthaltsgenehmigung einzuholen bevor das Programm loslegen darf! Ja, und
so wird es gemacht:
In unserer Taskstruktur steht ab dem Offset 92(=$5c) ein Zeiger auf unseren
MsgPort(MessagePort). Dies ist so eine Art direkter Draht (Telefonleitung)
zu unserer Workbench. Wir müssen also darauf warten bis wir von der Work-
bench angerufen werden. Dies erledigt die Funktion WaitPort. Sie wartet
solange bis an unserem Messageport eine Nachricht vorliegt. Wenn dies
der Fall ist, so müssen wir diese Nachricht natürlich aufzeichnen. (Dies
regelt die Funktion GetMsg. Als Ergebnis erhalten wir in d0 die Nachricht)
Wir müssen also die Nachricht irgendwo sichern weil wir diese noch
benötigen. (Die Workbench versteht unsere Sprache nicht genau und akzeptiert
es dann auch später das wir uns mit ihrer Meldung wieder abmelden; dazu
später mehr!)
So und nun dürfen wir loslegen. Ab hier erfolgt der normale Programmablauf.
Jedoch nur solange bis das Programm wieder aufhören soll zu existieren
(im Speicher). Denn dann müssen wir uns wieder von der Workbench abmelden.
Na und Sie können sich sicherlich schon denken wie das so ungefähr
funktioniert? Nein? Na gut ich erkläre es.
Wir müssen hier jetzt nun wieder zwei wege gehen. Der eine falls vom CLI
aus gestartet wurde und den anderen eben. Und diesen anderen gehen wir nun.
Das einzige was zu tun ist, beschränkt sich auf das Antworten. Die
Workbench nimmt diese Antwort auf und Schluckt sie zufrieden und
verabschiedet sich höfflich (vielleich mit einem Guru?; Na keine Angst!).
Dies wird durch die Funktion ReplyMsg durchgeführt. Aber weil es eben ein
Multitaskingfähiger Computer ist, so kann ja eben jedes Programm mit der
Workbench "funken". Dies kann sogar soweit gehen das unser direkter Draht
zur Workbench gestört (oder sollte ich vielleicht zerstört sagen?) werden
kann. Hier bietet sich uns doch direkt einmal die Möglichkeit und für sehr
kurze Zeit zum Kaiser von und zu Workbench zu erklären. (Aber bitte nur
für sehr kurze Zeit, da sonst das Gesetz vom Multitasking gestört wird)
Wir schalten halt eben das Multitasking (für kurze [sehr kurze] Zeit ab !!)
einfach ab. Dadurch kann uns keiner mehr dazwischenfunken und unser
Nachricht kommt gut an. Danach sind wir eben wieder einmal so gnädig und
shclaten das Multitasking wieder ein (Aber sofort!). Na und jetzt beendet
man das Programm halt mit einem wunderbaren "rts".
Wenn Sie nun hier überhaupt nicht durchgeblickt haben sollten (kann ja mal
vorkommen) so gebe ich Ihnen den Rat sich einfach einmal das Programm
Linien anzuschauen. Hier können sie alles nocheinmal nachvollziehen. Falls
es dann immer noch fragen geben sollte, so haben Sie die Möglichkeit mir
einen wunderschönen Brief zu schreiben indem Sie ihr Anliegen vorbringen.
Näheres dazu aber unter "Adresse des Autors".
***************************************************************************
Benutzungsbediengungen
Dieses Programm ist Public Domain, oder man kann es auch als FD bezeichnen
(Habe ich auf der Amiga-Juice 24 gelesen!). Dieses Programm darf also frei
kopiert werden. Wenn Sie dieses Programm in Ihre eigenen PD-Serie aufnehmen
wollen, so bitte ich Die trotzdem mir einen kleinen Brief zukommen
zu lassen. Ich bin nämlich dann in der Lage Ihnen für die PD-Serie die
neueste Version (Falls es doch einmal eine gibt!) anbieten zu können (für
die Serie!). Ansonsten gibt es eigentlich nichts weiter zu beachten.
Präsentiert wurde Ihnen das Programm von Nobi-Soft! Dieses Verzeichnis
wurde speziell für die Franz_PD-Serie hergestellt!
***************************************************************************
Adresse des Autors
Falls Sie also etwas auf dem Herzen haben, so schreiben Sie mir doch einfach
einmal. Es kann doch nichts schaden. Ich freue mich über jeden Brief. Das
kann ich Ihnen jetzt schon versprechen. Beachten Sie aber bitte daß
gesetzt den Fall Sie eine Antwort haben wollen, ein adressierter und aus-
reichen frankierter Rückumschlag beigelegt werden muß. Wenn Sie das
beachten so erhalten Sie 100%ig in kürzester Zeit eine Antwort.
Meine Adresse:
Norbert Tausch
Norikerstr. 06 I
8500 Nürnberg 01
***************************************************************************
Nachwort
Diesesmal möchte ich mich nur bei drei Personen bedanken. Es sind Holger
Franz, der die Franz_PD-Serie "großgezogen" hat und Gerald Zorn sowie
Hans-Peter Lattka die die Serie nun weiterführen und dieses Programm in die
Franz_PD-Serie aufgenommen haben. Dankeschön!
Nobi-Soft ; Nürnberg den 31.08.1991
***************************************************************************